package com.atguigu.gulimall.product.feign;

import com.atguigu.common.utils.R;
import com.atguigu.to.SkuReductionTo;
import com.atguigu.to.SpuBoundTo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

/**
 * @Author YinBR
 * @Date 2023/11/17 20:37
 * @PackageName:com.atguigu.gulimall.product.feign
 * @ClassName: couponFeignService
 * @Description: TODO
 * @Version 1.0
 */

@FeignClient("gulimall-coupon")//告诉spring cloud这个接口是一个远程客户端，要调用coupon服务(nacos中找到)
public interface couponFeignService {

        /**
         * 1、CouponFeignService.saveSpuBounds(spuBoundTo);
         * 1）、@RequestBody将这个对象转为json。
         * 2）、去服务注册发现中心（NACOS）找到gulimall-coupon服务，给/coupon/spubounds/save发送请求。
         * 将上一步转的json放在请求体位置，发送请求；
         * 3）、对方服务收到请求。请求体里有json数据。
         * (@RequestBody SpuBoundsEntity spuBounds)；将请求体的json转为SpuBoundsEntity；
         * 只要json数据模型是兼容的。双方服务无需使用同一个to
         *
         * @param spuBoundToEntity
         * @return
         */
        //TODO springCloud调用Feign时参数是否需要保持一致解答
        @PostMapping("coupon/smsspubounds/saveSpuBounds")
        public R saveSpuBounds(@RequestBody SpuBoundTo spuBoundToEntity);

        @PostMapping("/coupon/skufullreduction/saveInfo")
        R saveSkuReduction(@RequestBody SkuReductionTo skuReductionTo);
}
